package lab03.test06;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.HashMap;
import java.util.Map;

public class Test06 {

    public static void main(String[] args) {

        /**
         * 使用RandomAccessFile流统计一篇英文中的单词，要求如下：
         * （1）一共出现了多少个英文单词。
         * （2）有多少个互不相同的单词。
         * （3）给出每个单词出现的频率，并将这些单词按频率大小顺序进行打印.
         */


        String path = "D:Hello.txt";
        RandomAccessFile randomAccessFile = null;
        try {
            randomAccessFile = new RandomAccessFile(path, "r");

            String line ;
            Map<String,Integer> map = new HashMap<String, Integer>();

            //读取每一行 保存到line
            //遇到null就终止读取
            while ((line = randomAccessFile.readLine())!=null){


                //打印每一行的内容

                System.out.println(line);

                if(map.get(line) == null){

                    map.put(line,1);
                }else {

                    map.put(line,map.get(line)+1);
                }

            }

            System.out.println("一共有"+map.size()+"个互不相同的单词。");

            System.out.println("====每个单词出现的次数：====");
            for (Map.Entry<String,Integer> entry :map.entrySet()){
                System.out.println(entry.getKey()+":"+entry.getValue());
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                randomAccessFile.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
